# -*- coding: utf-8 -*-
"""
Created on Sun Aug  6 13:13:04 2023

@author: skunk69
"""

import json

chinese_name = u'初中学生攻击行为的主要心理特征问卷'
english_name = 'the Questionnaire of Major Psychological Characteristics of Aggressive Students in Junior Middle Schools'
abbreviation = 'QMPCAS-JMS'
category = u'一般心理健康与行为问题量表'

outline = u"""攻击性行为是指以身体、言语或利用他物有意伤害他人身心健康的任何行为，如：打人、骂人、粗暴地扰乱他人、欺负弱小伙伴等。攻击性行为概念有三个要素：伤害意图、伤害行为、社会评价。攻击性行为不仅会伤害到他人，还会危及社会秩序，对自身的身心发展也会产生较大的负面影响。攻击性行为是普遍存在的一个社会问题，青春期的孩子更容易出现攻击性行为。
具有高度攻击性的初中学生的操作定义为：在日常行为与交往中，具有明显的有意伤害他人身心健康的行为的初中学生。《初中学生攻击行为的主要心理特征问卷》由郑全全、陈秋燕在参考国外相关资料的基础上，于2002年独立编制而成。目的是探讨初中学生攻击性行为的心理特征及其指标，为及早防止攻击性行为的产生，诊断、矫治具有严重攻击性行为的学生的心理偏差提供教育和心理干预的科学依据。"""

instruction = u"""本研究是用来探讨具有高度攻击性行为的儿童的主要心理特征与表现特点的。攻击性行为是指以身体、言语或利用他物有意伤害他人身心健康的任何行为，如：打人、骂人、粗暴地扰乱他人、欺负弱小伙伴等。具有高度攻击性的初中学生的操作定义为：在日常行为与交往中，具有明显的有意伤害他人身心健康的行为的初中学生。这份问卷的条目就是有关具有高度攻击性的初中学生的主要特征的具体描述，请您仔细阅读每一道题目，对照您实践中耳闻目睹的实际情况进行评定。"""

with open('QMPCAS-JMS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.')
    items[key] = value

reverse_items = [9,16]
scales = [u'行为',u'认知',u'情绪',u'言语']
scales_items = [
    [6,8,9,12,14,16,18,21],# 行为
    [3,7,10,17,19,20,23],# 认知
    [2,5,13,15,22],# 情绪
    [1,4,11] # 言语   
    ]

check = []
for l in scales_items:
    check = check+l

print(len(check))
check_set = {i for i in sorted(check)}-{i for i in range(1,24)}
print(check_set)

factors = []
factors_scales = []
rating = [u'很不符合',u'基本不符合',u'基本符合',u'很符合']
score_rules = list(range(1,5))

implementation = u"""初中学生攻击行为的主要心理特征问卷是一个他评问卷，应由熟悉学生至少达一年以上的班主任、任课老师或者学校的行政管理者填写。"""

reliability = u"""在抽样研究中，总问卷的内部一致性Alpha系数为0.865，重测系数为0.813。"""
validity = u"""在抽样研究中，以验证性测量和诊断性测量进行效度检验，结果说明，提名测量（相当于重点抽样）的结果可以作为鉴别具有高度攻击性的初中学生的一个重要参考依据。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向题目反向计分，然后将各维度题目相加得到各维度分，所有题目得分之和即为该问卷的总分。总分反映了被测者攻击性行为的总状况。"""

applications = u"""该问卷尚未进行有关常模的研究。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':{
        'instruction':instruction,
        'items':items,
        'reverse_items':reverse_items,
        'scales':scales,
        'scales_items':scales_items,
        'factors':factors,
        'factors_scales':factors_scales,
        'rating':rating,
        'score_rules':score_rules        
                },
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)
